<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // 一,寄生式组合继承(经典继承(据说是最好用的继承方式))
      function Fu() {
        this.arr = [1, 2, 3];
      }
      Fu.prototype.say = function () {
        console.log("50块钱");
      };

      // 2.原型链继承(方法)
      Son.prototype = Object.create(Fu.prototype)
      Son.prototype.constructor=Son
      Son.prototype.shu=function(){
        console.log('我是子构造函数的方法');
      }
      function Son() {
        // 1.构造函数继承(属性)
        Fu.call(this);
      }


      const son = new Son();
      const fu=new Fu()
      console.log(son.arr);
      console.log(son.say);
      console.log(son.shu);
      console.log(Son.prototype.constructor);

      // 1.构造函数可以继承属性
      // 2.原型链继承可以拿到父构造函数的方法
      // 3.原型链继承和构造函数继承配合使用就是组合式继承
      // 4.寄生式继承:

      // 1.为什么会有寄生组合式继承?
      // 因为组合式继承会调用两次父构造函数,所以我们使用Object.create()取消
    </script>
  </body>
</html>
